package cn.backpackerxl.easyJDBC.mrss;

import cn.backpackerxl.easyJDBC.annotation.IgnoreField;
import cn.backpackerxl.easyJDBC.main.Executor;
import cn.backpackerxl.easyJDBC.util.JDBC;
import cn.backpackerxl.easyJDBC.util.SqlFactory;

import java.lang.reflect.Field;

import static cn.backpackerxl.easyJDBC.util.Logger.logger;
import static cn.backpackerxl.easyJDBC.util.SqlFactory.joinSqlUpdate;

/**
 * 数据库更新操作
 *
 * @author: backpackerxl
 * @create: 2021/12/23
 * @filename: EasyJDBCUpdate
 **/
public class EasyJDBCModify {

    /**
     * 修改表中的数据
     *
     * @param table  表名
     * @param fields 表中字段
     * @param obj    修改对象
     * @return 0 -> 修改失败 1 -> 修改成功
     */
    public int update(String table, Field[] fields, Object obj) {
        String sql = joinSqlUpdate(table, fields);
        logger(obj, JDBC.UPDATE, sql);
        return Executor.doExecutorByMRS(sql, ps -> {
            int idx = 1;
            for (int i = 1; i < fields.length; i++) {
                if (!fields[i].isAnnotationPresent(IgnoreField.class)) {
                    SqlFactory.doSetValue(fields, obj, ps, i);
                    idx++;
                }
            }
            fields[0].setAccessible(true);
            ps.setObject(idx, fields[0].get(obj));
        });
    }

}
